home *** CD-ROM | disk | FTP | other *** search
/ Compendium Deluxe 2 / LSD and 17bit Compendium Deluxe - Volume II.iso / a / prog / misc / gfront11.lha / GUIFront / Demos / Source / areas2.c < prev    next >
C/C++ Source or Header  |  1994-11-01  |  10KB  |  328 lines

  1.  
  2. /* Areas2.c - The GUI of the 'Areas' window of Spot - with some frames
  3.  *
  4.  * This is a GUIFront example GUI. To build an example, compile and link this
  5.  * file with Generic.o (also supplied).
  6.  * Everything prefixed with DEMO_ is exported to Generic.o.
  7.  */
  8.  
  9. #include <libraries/guifront.h>
  10.  
  11. /* First, some Gadget ID's */
  12.  
  13. enum
  14. {
  15.     GID_AREAS,
  16.     GID_ADD,
  17.     GID_DELETE,
  18.     GID_UP,
  19.     GID_DOWN,
  20.     GID_SORT,
  21.     GID_ADDRESS,
  22.     GID_EXPORTTO,
  23.     GID_KEEP,
  24.     GID_KEEPNUM,
  25.     GID_READONLY,
  26.     GID_KEEPTOYOU,
  27.     GID_ALIAS,
  28.     GID_CHARSET,
  29.     GID_WRITE,
  30.     GID_ORIGIN,
  31.     GID_GETORIGIN,
  32.     GID_REPLY,
  33.     GID_GETREPLY,
  34.     GID_SIGNATURE,
  35.     GID_GETSIGNATURE,
  36.     GID_TAGLINES,
  37. };
  38.  
  39. /* Some data and tag items we'll be needing later */
  40.  
  41. extern struct MinList areaslabels;
  42.  
  43. static struct Node areasnodes[] =
  44. {
  45.     {&areasnodes[1], (struct Node *)&areaslabels.mlh_Head, 0, 0, "-!=Spot Beta----------"},
  46.     {&areasnodes[2], &areasnodes[0], 0, 0, "Spot Beta"},
  47.     {&areasnodes[3], &areasnodes[1], 0, 0, "ANet Announce"},
  48.     {&areasnodes[4], &areasnodes[2], 0, 0, "-!=Internet-------------"},
  49.     {&areasnodes[5], &areasnodes[3], 0, 0, "C.S.AMIGA.GRAPHICS"},
  50.     {&areasnodes[6], &areasnodes[4], 0, 0, "C.S.AMIGA.PROGRAMMER"},
  51.     {&areasnodes[7], &areasnodes[5], 0, 0, "C.S.AMIGA.MISC"},
  52.     {&areasnodes[8], &areasnodes[6], 0, 0, "C.S.AMIGA.HARDWARE"},
  53.     {&areasnodes[9], &areasnodes[7], 0, 0, "C.S.AMIGA.ANNOUNCE"},
  54.     {(struct Node *)&areaslabels.mlh_Tail, &areasnodes[8], 0, 0, "C.S.AMIGA.REVIEWS"},
  55. };
  56.  
  57. struct MinList areaslabels =
  58. {
  59.     (struct MinNode *)&areasnodes[0], NULL,(struct MinNode *)&areasnodes[9]
  60. };
  61.  
  62. static GadgetSpec showsel_str =
  63. {
  64.     STRING_KIND, 0,0, {0,0,0,0,NULL,NULL,0,0},NULL,0
  65. };
  66.  
  67. static const struct TagItem areastags[] =
  68. {
  69.     {GTLV_ShowSelected, &showsel_str},
  70.     {GTLV_Labels, &areaslabels},
  71.     {TAG_DONE},
  72. };
  73.  
  74. static const STRPTR addresslabels[] =
  75. {
  76.     "1:111/111.1",
  77.     "2:222/222.2",
  78.     "3:222/222.3",
  79.     "4:444/444.4",
  80.     NULL,
  81. };
  82.  
  83. static const struct TagItem addresstags[] =
  84. {
  85.     {GTCY_Labels, addresslabels},
  86.     {TAG_DONE},
  87. };
  88.  
  89. static const STRPTR keeplabels[] =
  90. {
  91.     "All",
  92.     "Number of days",
  93.     "Number of messages",
  94.     NULL,
  95. };
  96.  
  97. static const struct TagItem keeptags[] =
  98. {
  99.     {GTCY_Labels, keeplabels},
  100.     {TAG_DONE},
  101. };
  102.  
  103. static const STRPTR charsetlabels[] =
  104. {
  105.     "LATIN-1",
  106.     "IBMPC",
  107.     "SWEDISH",
  108.     "ASCII",
  109.     "DEFAULT",
  110.     NULL,
  111. };
  112.  
  113. static const struct TagItem charsettags[] =
  114. {
  115.     {GTCY_Labels, charsetlabels},
  116.     {TAG_DONE},
  117. };
  118.  
  119. static const STRPTR writelabels[] =
  120. {
  121.     "LATIN-1",
  122.     "IBMPC",
  123.     "SWEDISH",
  124.     "ASCII",
  125.     NULL,
  126. };
  127.  
  128. static const struct TagItem writetags[] =
  129. {
  130.     {GTCY_Labels, writelabels},
  131.     {TAG_DONE},
  132. };
  133.  
  134. static const STRPTR taglineslabels[] =
  135. {
  136.     "Off",
  137.     "All",
  138.     "International",
  139.     NULL,
  140. };
  141.  
  142. static const struct TagItem taglinestags[] =
  143. {
  144.     {GTCY_Labels, taglineslabels},
  145.     {TAG_DONE},
  146. };
  147.  
  148. static const struct TagItem getorigintags[] =
  149. {
  150.     {ALT_Image, ALTI_GetMisc},
  151.     {TAG_DONE},
  152. };
  153.  
  154. static const struct TagItem getreplytags[] =
  155. {
  156.     {ALT_Image, ALTI_GetMisc},
  157.     {TAG_DONE},
  158. };
  159.  
  160. static const struct TagItem getsignaturetags[] =
  161. {
  162.     {ALT_Image, ALTI_GetMisc},
  163.     {TAG_DONE},
  164. };
  165.  
  166. static const struct TagItem txtags[] =
  167. {
  168.     {GTTX_Border, TRUE},
  169.     {TAG_DONE},
  170. };
  171.  
  172. /* Now, the GadgetSpec's we'll be needing for this GUI */
  173.  
  174. static GadgetSpec gadgetspecs[] =
  175. {
  176.     {LISTVIEW_KIND,24,7, {0,0,0,0,NULL,NULL,GID_AREAS,PLACETEXT_LEFT},areastags,GS_DefaultTags},
  177.     {BUTTON_KIND,   0,0, {0,0,0,0,"_Add...", NULL, GID_ADD, PLACETEXT_IN}, NULL, GS_DefaultTags},
  178.     {BUTTON_KIND,   0,0, {0,0,0,0,"D_elete...", NULL, GID_DELETE, PLACETEXT_IN}, NULL, GS_DefaultTags},
  179.     {BUTTON_KIND,   0,0, {0,0,0,0,"_Up", NULL, GID_UP, PLACETEXT_IN}, NULL, GS_DefaultTags},
  180.     {BUTTON_KIND,   0,0, {0,0,0,0,"_Down", NULL, GID_DOWN, PLACETEXT_IN}, NULL, GS_DefaultTags},
  181.     {BUTTON_KIND,   0,0, {0,0,0,0,"_Sort by name", NULL, GID_SORT, PLACETEXT_IN}, NULL, GS_DefaultTags},
  182.     {CYCLE_KIND,    0,0, {0,0,0,0,"Add_ress",NULL,GID_ADDRESS,PLACETEXT_LEFT},addresstags, GS_DefaultTags},
  183.     {STRING_KIND,   0,0, {0,0,0,0,"E_xport to",NULL,GID_EXPORTTO,PLACETEXT_LEFT},NULL,GS_DefaultTags},
  184.     {CYCLE_KIND,    0,0, {0,0,0,0,"_Keep",NULL,GID_KEEP,PLACETEXT_LEFT},keeptags,GS_DefaultTags},
  185.     {INTEGER_KIND,  4,0, {0,0,0,0,NULL,   NULL,GID_KEEPNUM,PLACETEXT_IN},NULL,GS_DefaultTags | GS_NoWidthExtend},
  186.     {CHECKBOX_KIND, 0,0, {0,0,0,0,"Read _only",NULL,GID_READONLY,PLACETEXT_LEFT},NULL,GS_DefaultTags},
  187.     {CHECKBOX_KIND, 0,0, {0,0,0,0,"Kee_p to you",NULL,GID_KEEPTOYOU,PLACETEXT_LEFT},NULL,GS_DefaultTags},
  188.     {STRING_KIND,   0,0, {0,0,0,0,"Al_ias",NULL,GID_ALIAS,PLACETEXT_LEFT},NULL,GS_DefaultTags},
  189.     {CYCLE_KIND,    0,0, {0,0,0,0,"_Charset",NULL,GID_CHARSET,PLACETEXT_LEFT},charsettags,GS_DefaultTags | GS_NoWidthExtend},
  190.     {CYCLE_KIND,    0,0, {0,0,0,0,"_Write",NULL,GID_WRITE,PLACETEXT_LEFT},writetags,GS_DefaultTags | GS_NoWidthExtend},
  191.     {TEXT_KIND,    20,0, {0,0,0,0,"Origi_n",NULL,GID_ORIGIN,PLACETEXT_LEFT},txtags,GS_DefaultTags},
  192.     {GETALT_KIND,   0,0, {0,0,0,0,NULL,NULL,GID_GETORIGIN,PLACETEXT_IN},getorigintags,GS_DefaultTags},
  193.     {TEXT_KIND,     0,0, {0,0,0,0,"Repl_y",NULL,GID_REPLY,PLACETEXT_LEFT},txtags,GS_DefaultTags},
  194.     {GETALT_KIND,   0,0, {0,0,0,0,NULL,NULL,GID_GETREPLY,PLACETEXT_IN},getreplytags,GS_DefaultTags},
  195.     {TEXT_KIND,     0,0, {0,0,0,0,"Signa_ture",NULL,GID_SIGNATURE,PLACETEXT_LEFT},txtags,GS_DefaultTags},
  196.     {GETALT_KIND,   0,0, {0,0,0,0,NULL,NULL,GID_GETSIGNATURE,PLACETEXT_IN},getsignaturetags,GS_DefaultTags},
  197.     {CYCLE_KIND,    0,0, {0,0,0,0,"Tag _Lines",NULL,GID_TAGLINES,PLACETEXT_LEFT},taglinestags,GS_DefaultTags},
  198. };
  199.  
  200. /* Now, we group all of these GadgetSpecs into an array of pointers, so the
  201.  * layout engine can locate gadgets merely by their Gadget IDs.
  202.  */
  203.  
  204. GadgetSpec *DEMO_GadgetSpecList[] =
  205. {
  206.     &gadgetspecs[0], &gadgetspecs[1], &gadgetspecs[2], &gadgetspecs[2],
  207.     &gadgetspecs[3], &gadgetspecs[4], &gadgetspecs[5], &gadgetspecs[6],
  208.     &gadgetspecs[7], &gadgetspecs[8], &gadgetspecs[9], &gadgetspecs[10],
  209.     &gadgetspecs[11], &gadgetspecs[12], &gadgetspecs[13], &gadgetspecs[14],
  210.     &gadgetspecs[15], &gadgetspecs[16], &gadgetspecs[17], &gadgetspecs[18], 
  211.     &gadgetspecs[19], &gadgetspecs[20], &gadgetspecs[21], NULL
  212. };
  213.  
  214. /* Finally, the layout tag list itself. This is where most of the work is
  215.  * done. This list completely describes how the above gadgets are arranged
  216.  * in groups in the GUI.
  217.  */
  218.  
  219. ULONG DEMO_LayoutList[] =
  220. {
  221.     GUIL_Flags, GUILF_PropShare,
  222.  
  223.     GUIL_VertGroup, 1,
  224.         GUIL_Flags, GUILF_PropShare | GUILF_EqualWidth,
  225.  
  226.         GUIL_VertGroup,0,
  227.             GUIL_Flags, GUILF_PropShare | GUILF_EqualWidth,
  228.  
  229.             GUIL_FrameType, GUILFT_Ridge,
  230.             GUIL_FrameHeadline, "Areas",
  231.  
  232.             GUIL_GadgetSpecID, GID_AREAS,
  233.             GUIL_HorizGroup,0,
  234.                 GUIL_Flags, GUILF_EqualShare | GUILF_EqualHeight,
  235.                 GUIL_GadgetSpecID, GID_ADD,
  236.                 GUIL_GadgetSpecID, GID_DELETE,
  237.             TAG_DONE,
  238.  
  239.             GUIL_HorizGroup,0,
  240.                 GUIL_Flags, GUILF_EqualShare | GUILF_EqualHeight,
  241.                 GUIL_GadgetSpecID, GID_UP,
  242.                 GUIL_GadgetSpecID, GID_DOWN,
  243.             TAG_DONE,
  244.             GUIL_GadgetSpecID, GID_SORT,
  245.         TAG_DONE,
  246.  
  247.         GUIL_VertGroup,1,
  248.             GUIL_Flags, GUILF_PropShare | GUILF_EqualWidth | GUILF_LabelAlign,
  249.             GUIL_FrameType, GUILFT_Ridge,
  250.             GUIL_GadgetSpecID, GID_ADDRESS,
  251.             GUIL_GadgetSpecID, GID_EXPORTTO,
  252.             GUIL_GadgetSpecID, GID_READONLY,
  253.         TAG_DONE,
  254.  
  255.     TAG_DONE,
  256.  
  257.     GUIL_VertGroup, 1,
  258.         GUIL_Flags, GUILF_PropShare | GUILF_EqualWidth,
  259.  
  260.         GUIL_VertGroup, 1,
  261.             GUIL_Flags, GUILF_PropShare | GUILF_EqualWidth | GUILF_LabelAlign,
  262.             GUIL_FrameType, GUILFT_Ridge,
  263.             GUIL_FrameHeadline, "Keep",
  264.             GUIL_GadgetSpecID, GID_KEEP,
  265.             GUIL_GadgetSpecID, GID_KEEPNUM,
  266.             GUIL_GadgetSpecID, GID_KEEPTOYOU,
  267.         TAG_DONE,
  268.  
  269.         GUIL_HorizGroup, 1,
  270.             GUIL_Flags, GUILF_PropShare | GUILF_EqualHeight,
  271.             GUIL_FrameType, GUILFT_Ridge,
  272.             GUIL_FrameHeadline, "Charsets",
  273.             GUIL_GadgetSpecID, GID_CHARSET,
  274.             GUIL_GadgetSpecID, GID_WRITE,
  275.         TAG_DONE,
  276.  
  277.         GUIL_VertGroup, 1,
  278.             GUIL_Flags, GUILF_PropShare | GUILF_EqualWidth | GUILF_LabelAlign,
  279.             GUIL_FrameType, GUILFT_Ridge,
  280.             GUIL_FrameHeadline, "Headers",
  281.             GUIL_HorizGroup,0,
  282.                 GUIL_Flags, GUILF_PropShare | GUILF_EqualHeight,
  283.                 GUIL_GadgetSpecID, GID_ORIGIN,
  284.                 GUIL_GadgetSpecID, GID_GETORIGIN,
  285.             TAG_DONE,
  286.  
  287.             GUIL_HorizGroup,0,
  288.                 GUIL_Flags, GUILF_PropShare | GUILF_EqualHeight,
  289.                 GUIL_GadgetSpecID, GID_REPLY,
  290.                 GUIL_GadgetSpecID, GID_GETREPLY,
  291.             TAG_DONE,
  292.  
  293.             GUIL_HorizGroup,0,
  294.                 GUIL_Flags, GUILF_PropShare | GUILF_EqualHeight,
  295.                 GUIL_GadgetSpecID, GID_SIGNATURE,
  296.                 GUIL_GadgetSpecID, GID_GETSIGNATURE,
  297.             TAG_DONE,
  298.         TAG_DONE,
  299.  
  300.         GUIL_VertGroup, 1,
  301.             GUIL_Flags, GUILF_PropShare | GUILF_EqualWidth | GUILF_LabelAlign,
  302.             GUIL_FrameType, GUILFT_Ridge,
  303.             GUIL_GadgetSpecID, GID_ALIAS,
  304.             GUIL_GadgetSpecID, GID_TAGLINES,
  305.         TAG_DONE,
  306.     TAG_DONE,
  307.  
  308.     TAG_DONE,
  309. };
  310.  
  311. /* Obligatory version tag */
  312.  
  313. static const char ver[] = "$VER: Areas2 1.0 " __AMIGADATE__;
  314.  
  315. /* Now, some globals used by Generic.o during the call to GF_CreateGUIA() */
  316.  
  317. int DEMO_InitialOrientation = GUIL_HorizGroup;
  318.  
  319. STRPTR DEMO_WindowTitle = "Spot/Areas GUI (2)";
  320. STRPTR DEMO_AppID       = "Spot.Areas2";
  321.  
  322. STRPTR DEMO_Version     = "1.0",
  323.        DEMO_LongDesc    = "Demo program - The 'Areas' GUI of Spot (2)",
  324.        DEMO_Author      = "Michael Berg",
  325.        DEMO_Date        = __AMIGADATE__;
  326.  
  327. BOOL   DEMO_Backfill    = FALSE;
  328.